home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigantic Games 2
/
Gigantic Games 2.iso
/
pc
/
_a_
/
abitur
/
txt
/
aktionen.mod
< prev
next >
Wrap
Text File
|
1994-12-23
|
4KB
|
140 lines
IMPLEMENTATION MODULE Aktionen;
FROM AbiturScreen IMPORT BACKWindow;
FROM Intuition IMPORT RefreshGadgets, Gadget, IntuiText,
IntuiMessagePtr, IDCMPFlagSet, IDCMPFlags,
GadgetFlagSet,
ActivationFlagSet, ActivationFlags,
boolGadget;
FROM SYSTEM IMPORT BITSET, LONGSET, CAST, ADR, ADDRESS;
FROM Exec IMPORT WaitPort, GetMsg, ReplyMsg;
FROM Graphics IMPORT DrawModeSet, SetAPen, Move, Draw;
FROM StundenPlan IMPORT Plaene;
FROM Dos IMPORT Delay;
FROM Arts IMPORT BreakPoint;
VAR MyNFGText : IntuiText;
NaechsteFrageGadg: Gadget;
PROCEDURE MNrToMIS( Number: CARDINAL; VAR Menu, Item: CARDINAL );
VAR MenuBitSet : BITSET;
BEGIN
MenuBitSet := CAST(BITSET,Number);
Menu := CAST(CARDINAL,(MenuBitSet-BITSET{5,6,7,8,9,10,11,12,13,14,15}));
Item := CAST(CARDINAL,(MenuBitSet-BITSET{0,1,2,3,4,11,12,13,14,15}));
Item := Item/32
END MNrToMIS;
PROCEDURE GetAktion(VAR A: SpielAktion; VAR Parameter: INTEGER);
VAR iAdr : ADDRESS;
ImPtr: IntuiMessagePtr;
Class: IDCMPFlagSet;
Code: CARDINAL;
MenuNr, MenuItem: CARDINAL;
i : INTEGER;
BEGIN
BACKWindow^.firstGadget := ADR(NaechsteFrageGadg);
(* BreakPoint(ADR("In Aktionen Anfang")); *)
(* Rahmen um NextGadget: *)
SetAPen(BACKWindow^.rPort, 7);
Move(BACKWindow^.rPort, 29 , 49);
Draw(BACKWindow^.rPort, 29 +114, 49);
Draw(BACKWindow^.rPort, 29 +114, 60);
Draw(BACKWindow^.rPort, 29 , 60);
Draw(BACKWindow^.rPort, 29 , 49);
RefreshGadgets(ADR(NaechsteFrageGadg), BACKWindow, NIL);
LOOP
Delay(10);
ImPtr := GetMsg(BACKWindow^.userPort);
IF ImPtr # NIL THEN
Code := ImPtr^.code;
Class:= ImPtr^.class;
iAdr := ImPtr^.iAddress;
ReplyMsg(ImPtr);
IF gadgetUp IN Class THEN
IF iAdr = ADR(NaechsteFrageGadg) THEN
A := NaechsteFrage
END
END;
IF menuPick IN Class THEN
MNrToMIS(Code, MenuNr, MenuItem);
CASE MenuNr OF
0 : CASE MenuItem OF
0: A := Save
|1: A := Load
|2: A := NeuesSpiel
|3: A := Ende
ELSE
A := Fehler
END
|1 : Parameter := MenuItem + 1;
A:= ZeigeStupl
|2 : Parameter := MenuItem ;
A:=ZeigFach
|3 : Parameter := MenuItem + 1;
A := ZeigZeugnis
ELSE
A := Fehler
END (* CASE *)
END (* IF *);
EXIT
END;
FOR i := 1 TO 4 DO
IF Plaene[i].W # NIL THEN
ImPtr := GetMsg(Plaene[i].W^.userPort);
IF ImPtr # NIL THEN
Class:= ImPtr^.class;
ReplyMsg(ImPtr);
IF closeWindow IN Class THEN
Parameter := i;
A := CloseAPlan;
EXIT
END
END
END
END
END; (* LOOP *)
BACKWindow^.firstGadget := NIL;
RefreshGadgets(NIL, BACKWindow, NIL)
END GetAktion;
BEGIN
WITH MyNFGText DO
frontPen := 5;
backPen := 4;
drawMode := DrawModeSet{};ÿ leftEdge := 1;
topEdge := 1;
iTextFont := NIL;
iText := ADR("Nächste Stunde");
nextText := NIL
END;
WITH NaechsteFrageGadg DO
nextGadget := NIL;
leftEdge := 30;
topEdge := 50;
width := 113;
height := 10;
flags := GadgetFlagSet{}; (* Complement *)
activation := ActivationFlagSet{gadgImmediate, relVerify};
gadgetType := boolGadget;
gadgetRender := NIL;
selectRender := NIL;
gadgetText := ADR(MyNFGText);
mutualExclude := LONGSET{};
specialInfo := NIL;
gadgetID := 2;
userData := NIL
END (* WITH NaechsteFrage Gadget DO *)
END Aktionen.